// 相当于向两边的连续增长序列，取两边的最大值
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 110;
int h[N], f[N];
int n;

int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        cin >> n;
        for (int i = 1; i <= n; ++i)
            cin >> h[i];
        int res = 0;
        // 第一次从左边找最长上升子序列
        for (int i = 1; i <= n; ++i)
        {
            f[i] = 1;
            for (int j = 1; j < i; ++j)
                if (h[j] < h[i])
                    f[i] = max(f[i], f[j] + 1);
            res = max(res, f[i]);
        }
        // 在之前必须要把残留的dp置空，否则一定会出现错误
        // 然后从右边找
        for (int i = n; i > 0; --i)
        {
            f[i] = 1;
            for (int j = n; j > i; --j)
                if (h[j] < h[i])
                    f[i] = max(f[i], f[j] + 1);
            res = max(res, f[i]);
        }
        cout << res << endl;
    }
    return 0;
}